Script Summary: Removes the annoying link-conversion (on click) at Google Search. The Referrer is also hidden to improve your privacy. Designed for Firefox and Google Chrome.
Version: 3.6
At the Google Search engine, search results are converted to an ugly link upon click. This link enables tracking for Google, and hides the referrer to other sites.
For example, the search entry
http://www.google.com/
(when searching for "Google") will be replaced with:https://encrypted.google.com/url?sa=t&rct=j&q=Google&source=web&cd=8&sqi=2&ved=0CFgQFjAH&url=http%3A%2F%2Fwww.google.com%2F&ei=Ej__TrCkJo2bOrSs2aIE&usg=AFQjCNG5-9Jej-ukVeakTgwonqt2narbYg&sig2=f9f1dWcZoj6ZUC2Zxy9y2g
This script removes Google's link-conversion/tracking feature.
The referral hiding feature has been implemented in another way, so that the 3rd-party sites cannot track your Google search query.
Chrome extension
The same script is available in the Chrome Web Store, see Don't track me Google.
Referrer hiding
In Chrome, this feature has zero side-effects.For technical reasons, the Firefox-implementation comes with a data-URI redirection. This URI shows up for a split second to hide the referrer. This does not affect the browsing speed, and URI's can still be copied.
If you want to, the referrer hiding feature can be disabled by changing one character at the source code: Replace var HIDE_REFFERER_LEVEL = 3;
with var HIDE_REFERRER_LEVEL = 0;
. More info about the preferences (including persistence) can be found here.
Change log
- 31 december 2011 - Release
- 3 january 2012 - Patched
History behaviour. - 8 january 2012
- Updated script injection method to get the script to work in Chromium 17.
- Added a method to make the referrer invisible to the visited site. This feature improves your privacy.
- 21 january 2012 - Version 3
- Replaced do-not-track method with
rel="noreferrer"
for Webkit-based browsers (Chrome). - Fully implemented referrer-hiding for Firefox and Chrome.
- Halved number of
@match
rules, to reduce file size. - Added configuration variable
HIDE_REFERRER_LEVEL
- Replaced do-not-track method with
- 24 january 2012 - 3.1 - Added support for Firefox 2+ (previously 4+).
- 6 february 2012 - 3.2 - Fixed a small bug: Existing Google-URLs (as in "Jump to anchor") are correctly handled now.
- 15 february 2012 - 3.3
- Added support for non-ASCII URLs.
- Added option (enabled by default) to disable referrer hiding on downloadable files, such as pdf files. In firefox, this feature will not open a data-URI for search results which are prefixed with
[...]
. - Added
@match *://.google.com.cy/*
rule, to reflect the updated supported Google domain list.
- 18 february 2012 - 3.4
- Fixed filter, to completely disable the script for non-search pages.
- Moved guide from source code to this page and this post to greatly reduce file size.
- Added preference persistence feature. More details...
- Corrected URL decoding for existing Google search result links.
- 15 november 2012 - 3.5
- Improved URL detection filter: Ignores empty links and recognises Google Maps / Ditu.
- Beautifies the link on hover (previously, this only happened on click).
- Published Chrome extension in the Chrome Web Store.
- 25 april 2013 - 3.6
- Remove ping attribute to avoid tracking in Chrome
- Added observer to ensure that Google does not change the URL right before it's visited (fixes issue 123869)
Technical details
I have published the mechanism behind this code on the Stack Exchange websites:- Explanation of the
rwt
rewriting method (Web Applications) - Referrer hiding in JavaScript (Stack Overflow)
- Content scripts run in an isolated environment. To get access to the global namespace, the script is dynamically injected in the page itself.
- To detect whether a file is downloadable or not, the script checks whether a file type prefix precedes the search result link.